import logging
import os
from configparser import ConfigParser


class Logger:
    def __init__(self):
        # 1. 读取配置文件（只读取级别、路径等，不读format）
        self.config = ConfigParser()
        self.config.read("config/config.ini", encoding="utf-8")

        # 2. 直接在代码中定义日志格式（绕过configparser解析）
        self.log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"  # 直接写死

        # 3. 读取其他配置（级别、路径）
        self.log_level = self.config.get("LOG", "level", fallback="INFO")
        self.log_file = self.config.get("LOG", "file_path", fallback="logs/test.log")

        # 确保日志目录存在
        os.makedirs(os.path.dirname(self.log_file), exist_ok=True)

        # 初始化日志器
        self.logger = logging.getLogger(__name__)
        self.logger.setLevel(self.log_level)
        self._set_handler()

    def _set_handler(self):
        # 设置格式化器（使用代码中定义的格式）
        formatter = logging.Formatter(self.log_format)

        # 控制台 handler
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(formatter)

        # 文件 handler
        file_handler = logging.FileHandler(self.log_file, encoding="utf-8")
        file_handler.setFormatter(formatter)

        self.logger.addHandler(console_handler)
        self.logger.addHandler(file_handler)

    def get_logger(self):
        return self.logger


# 实例化
logger = Logger().get_logger()